N/A
N/A
The present invention relates to computer networks, and more particularly, to a method and apparatus for identifying at one of a plurality of clients belonging to a session, session messages considered to be duplicate, replayed or stale messages and eligible for discard.
In many network applications, messages may be sent among large groups of clients that are members of a session. For example, in chat groups communicating over the Internet, each client in the session sends messages to all the other clients in the session and each client receives messages transmitted by other clients in real-time. Furthermore, in presence notification applications, a first client logs into a session and a message advising of the first client""s presence may be transmitted to a large group of other clients that may be interested in knowing of the first client""s presence on the network. When applications such as these send messages among the numerous members of a session, they may use protocols that intentionally send duplicate messages in order to have some level of assurance that most clients in the session have received at least one copy of each message. Duplicate messages may also be sent intentionally in order to update new members. Replayed messages can also be sent in a network by malicious clients that may be attempting to disrupt a session. Finally, messages delayed in transit may be sufficiently old to be of no interest to the receiving client upon their arrival. it may be useful for clients in a session to have a simple way to detect such duplicate, replayed or old messages.
Several techniques have been employed to detect duplicate, replayed or old messages. In one method, users keep track of sequence numbers included in messages transmitted by each client. Keeping track of sequence numbers for every transmitting client, however, is not only compute intensive, but may be difficult if clients join the session at different times. A new client would need to somehow determine the correct sequence number for each existing client in the session. Additionally, some applications do not employ sequence numbers.
It would therefore be useful, when sending messages among the members of a large group, to be able to detect and discard messages which are duplicate, replayed or old messages without keeping track of sequence numbers from each sender.
A method and apparatus for identifying messages as duplicate, replayed or old messages is disclosed. Clients that are members of a session are capable of forwarding messages to other clients in the session over a network and receiving messages sent by other clients in the session over the network in real time. A session moderator is communicatively coupled to the network and is operative to periodically forward a beacon message to the clients in the session via multicast, broadcast or a series of unicast messages. Each beacon message contains a beacon sequence number that is updated at pre-determined intervals in a predetermined sequence. In a preferred embodiment, the beacon message is authenticated so that the members of the session can verify that the beacon message was transmitted by the session moderator. The beacon sequence number is extracted from the beacon message at each client in the session and employed to generate a local sequence number.
A client in the session that wishes to send a message to other members of the session includes the current local sequence number in the message that it transmits. A client in the session that receives the message transmitted by another client in the session compares the local sequence number within the received message to its own current local sequence number. If the current local sequence number generated in the client receiving the message is greater than the local sequence number in the received message by a predetermined value, the received message is considered to be a duplicate, replayed or old message and is eligible for discard. Messages eligible for discard may then be discarded.
In another embodiment of the invention, the session moderator transmits beacon messages to the session members. The beacon messages contain a beacon sequence number which is every nth number in a predetermined number sequence generated within the session moderator, where n is 2 or greater. The received beacon sequence number is stored in the respective clients as a local sequence number which is updated by the respective clients at a pre-determined update interval corresponding to the period for updating the beacon sequence numbers in the session moderator. By sending a beacon message to the clients periodically, the session moderator assures synchronization of the beacon sequence numbers generated in the session moderator with the local sequence numbers maintained by the respective session members.
Other aspects, features, and advantages of the present invention are disclosed in the detailed description that follows.